近距离了解木兰开源社区项目——HCloud
木兰开源社区本期推出上海交通大学发起项目——HClolud。
木兰开源社区推广项目HClolud
HClolud项目负责人
夏虞斌 上海交通大学副教授,CCF高级会员、IEEE/ACM会员,上海市“学术带头人”。主要研究领域是操作系统、系统虚拟化与系统结构;
糜泽羽 上海交通大学助理研究员。研究方向是操作系统、系统虚拟化、系统安全;
华志超 上海交通大学IPADS博士生,研究方向是ARM平台操作系统、虚拟化安全;
刘劲锋 上海交通大学软件学院本科生。
项目简介
核心功能介绍
一、统一的函数服务接口。用户不用关心HCloud中到底有哪些云,编写的函数只要遵守HCloud的统一格式,使用HCloud提供的统一接口即可。
二、动态资源调度。无服务计算的核心理念之一就是按需调度,按量付费。HCloud里的大部分资源都会根据请求的数量进行扩容缩容,以减少不必要的开销。这主要依靠Manager来实现,Manager会监控云内所有资源的使用状况,在资源使用率较高时分配更多资源,在使用率较低时释放一些资源。在无服务计算中,资源的粒度很小,分配释放都很快,这也是Manager能够快速响应调整,尽量不影响性能表现的前提。
三、多云后端,跨云迁移。对用户来说,他可以在几乎无感知的状态下,使用到多个云的资源。Client会结合函数使用状况、各个云的资源使用状况,调整流量的分配,目标是让用户侧的性能更优,HCloud整体的费用更低。这也要求用户的服务能够跨云迁移。对于无状态的应用,这一点比较好实现。对于有状态的应用,HCloud提供多种存储方式供用户在不同场景下使用。比如,需要支持在任何时刻都可以切换机器执行的函数,就使用跨云存储,以保证函数迁移不受影响。在有限时间段支持迁移的函数,如数据来源是用户侧,中间数据存放在云内存储,不需要和其他应用共享,结果也直接返回给用户。这类函数在中间数据产生之后,不支持换云执行。但是两个不同的请求,可以被分配给不同云执行。也就是说,这类函数不能在运行时终止,但支持将后续的流量都转移。
四、与公有云无服务计算结合。无服务计算的冷启动时间是一个衡量服务质量的重要指标,除了使用虚拟机资源提供函数服务,保证较好的兼容性之外,HCloud也会使用公有云的无服务计算平台来提升性能,主要有两个场景。
(一)冷启动:当某个函数被调用,联合云平台先检查是否有正在运行的函数实例如果有就交给函数实例处理,如果没有就先转发给公有云的无服务计算平台处理,然后去启动一个虚拟机上的函数实例。
(二)过量服务:当某个函数的调用量突然猛增,HCloud会增加函数实例来应对。这一步也有可能需要增加虚拟机的数量,然而虚拟机的启动相对缓慢,为了掩盖这一部分延时,HCloud也会尝试将部分流量转发给公有云的无服务计算平台。
项目优势特点
一、更细的资源粒度:无服务计算的单个资源是函数,几乎不会需要考虑函数的热迁移,如果函数足够小巧,中止后重新启动即可。同时,细粒度的资源提供了更多的调度可能,将一个传统的应用进程拆分成多个函数后,就有可能运行在多个机器,乃至多个云上,最后再组合成最终结果返回。
二、更少的细节暴露:对于用户来说,传统的云服务器包含操作系统、网络设置、运行状态等细节,而无服务计算最简化的情况下就只有函数编程语言是用户所知的。而其他一些用户不可见的部分,开发者就有了更多的实现空间,比如,网络结构不需要满足每一个机器之间都是联通的,因为这些机器对用户来说并不可见,只要它们能协作完成函数服务即可。
三、宽泛的应用支持:选取FaaS作为唯一资源使得资源多样性不足,但FaaS有其独特性:它支持用户自定义代码,并不像SaaS一般提供特定应用。联合云Serverless平台有潜力支撑各种应用,包括图片处理、网页服务、音视频处理、API集成等。
项目原型实现
项目初步评测的性能
一、正弦,性能表现呈现规律性地波动,符合正弦曲线。
二、泊松分布,性能参数满足泊松分布。
三、随机,在一定范围内随机变化。
HCloud的Client会根据云的性能表现来动态选择一个云使用,如图所示,分别使用单个云和动态选择的平均延时有明显差异。HCloud采用多云架构,有更大资源余量,能够更好地应对性能波动。同时,Serverless是按量付费,不会因为要维护资源池而产生浪费。
更多木兰开源社区项目详情,请点击“阅读原文”